package io.gitee.hchaojie.day05;

import java.util.Objects;

public class Student implements Comparable<Student> {
    private String name;
    private int age;
    private String sno;

    public Student() {
    }

    public Student(String name, int age, String sno) {
        this.name = name;
        this.age = age;
        this.sno = sno;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSno() {
        return sno;
    }

    public void setSno(String sno) {
        this.sno = sno;
    }

//    @Override
//    public boolean equals(Object o) {
//        if (this == o) return true;
//        if (o == null || getClass() != o.getClass()) return false;
//
//        Student student = (Student) o;
//
//        if (age != student.age) return false;
//        if (name != null ? !name.equals(student.name) : student.name != null) return false;
//        return sno != null ? sno.equals(student.sno) : student.sno == null;
//    }


    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name) &&
                Objects.equals(sno, student.sno);
    }

    @Override
    public int hashCode() {
        // 需要根据对象的所有属性来计算
        return Objects.hash(name, age, sno);
    }

    //    @Override
//    public boolean equals(Object obj) {
//        if (this == obj) {
//            return true;
//        }
//
//        // 要判断当前对象的属性 是否 和另外对象的属性 一一相等
//
////        if (obj == null) {
////            return false;
////        }
//
//        // obj不是Student的一个实例
//        if (!(obj instanceof Student)) {
//            return false;
//        }
//
//        Student other = (Student) obj;
//
//        if (!this.name.equals(other.name)) {
//            return false;
//        }
//
//        if (this.age != other.age) {
//            return false;
//        }
//
//        if (!this.sno.equals(other.sno)) {
//            return false;
//        }
//
//        return true;
//    }


    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Student{");
        sb.append("name='").append(name).append('\'');
        sb.append(", age=").append(age);
        sb.append(", sno='").append(sno).append('\'');
        sb.append('}');
        return sb.toString();
    }

    // 实现两个student对象的比较规则
    @Override
    public int compareTo(Student o) {
        // 按照年纪比较
        return this.age - o.age;

        // 按照学号比较
//        if (this.sno == null && o.sno != null) {
//            return -1;
//        } else {
//            return this.sno.compareTo(o.sno);
//        }

        // return 0;
    }
}
